home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / pcl / sptmbr16.lha / 3-19-87-notes.text < prev    next >
Text File  |  1987-03-21  |  5KB  |  139 lines

  1.  
  2.  
  3. These notes correspond to *pcl-system-date* 3/19/87 prime.
  4.  
  5. This release runs in:
  6.   ExCL
  7.   Lucid
  8.   Symbolics Common Lisp (Genera)
  9.   Vaxlisp (2.0)
  10.   Xerox Common Lisp (Lyric Release)
  11.  
  12. CMU Lisp (nee Spice) and KCL should be working soon, I will announce
  13. another release at that time.  I figured it was better to get some
  14. people beating on it as soon as possibl.
  15.  
  16. Xerox Lisp users should FTP all the source files from /pub/pcl/ as well
  17. as all the dfasl files from /pub/pcl/xerox/.  Included in the xerox
  18. specific directory is a file called PCL-ENV, which provides some simple
  19. environment support for using PCL in Xerox Lisp.
  20.  
  21.  
  22.  
  23. Following is a description of some of the things that are different in
  24. this release of PCL.  This list isn't in any particular order.  There
  25. are a number of incompatible changes in this release, please read the
  26. whole thing carefully.
  27.  
  28. As usual, please enjoy, and send bug-reports, questions etc. to
  29. CommonLoops@Xerox.com.
  30.  
  31. ***
  32. The single most significant change is that discriminator-objects with
  33. corresponding discriminating functions have been replaced by generic
  34. function objects.  What does this mean??  Well, in previous releases of
  35. PCL, if you did:
  36.  
  37. (defmethod foo ((x class)) 'class)
  38. (defmethod foo ((x method)) 'method)
  39.  
  40. Then (discriminator-named 'foo) returned a discriminator object which
  41. had both of these methods defined on it.  (symbol-function 'foo)
  42. returned a discriminating function, which (discriminator-named 'foo) had
  43. put in foo's function cell.
  44.  
  45. In this release of PCL, the above defmethod's put a generic-function
  46. object in foo's function cell.  This generic-function object is a
  47. combination of the discriminator object and discriminating function of
  48. the previous releases of PCL.  This generic-function object is
  49. funcallable, funcalling it causes the appropriate method to be looked up
  50. and called.  This generic function object has accessors which return the
  51. methods defined on the generic function.  This generic function object
  52. is mutable.  It is possible to add and remove methods from it.
  53.  
  54. (defmethod foo ((x class)) 'class)
  55. (defmethod foo ((x method)) 'method)
  56.  
  57. (generic-function-methods #'foo)
  58. (#<Method FOO (METHOD) 3434> #<Method FOO (CLASS) 3245>)
  59.  
  60. (foo (make 'class))  ==> 'class
  61. (foo (make 'method)) ==> 'method
  62.  
  63. (remove-method #'foo (car (generic-function-methods #'foo)))
  64.  
  65. (foo (make 'class))  ==> 'class
  66. (foo (make 'method)) ==> no matching method error
  67.  
  68.  
  69. Note that as part of this change, the name of any function, generic
  70. function or class which included the string "DISCRIMINATOR" has changed.
  71. The name changes that happened were:
  72.   The class essential-discriminator was renamed to generic-function,
  73.   The class basic-discriminator and the class discrimiantor were
  74.   combined and renamed to standard-generic-function.
  75.  
  76. If you went through your code and made the following name changes, you
  77. would probably win, (this is what I did to PCL and it worked).
  78.  
  79.   essential-discriminator  ==> generic-function
  80.   basic-discriminator      ==> standard-generic-function
  81.   discriminator
  82.     (when it appears as a specializer)
  83.          ==> standard-generic-function
  84.   discriminator
  85.     (when it appears as part of a variable name or something)
  86.          ==> generic-function
  87.  
  88. ***
  89. In most Lisp implementations, method lookup is at least twice as fast as
  90. it was in the previous release.
  91.  
  92. ***
  93. The compiler isn't called when PCL is loaded anymore.  In a future
  94. release, the compiler will also not be called when any other method
  95. definitions are loaded.  This is part of an effort to get PCL to a state
  96. where the compiler will never be needed when compiled files are loaded.
  97.  
  98. ***
  99. PCL now has a mechanism for naming the generic-function's and method
  100. functions defined by defmethod.  This means that in ports of PCL which
  101. take advantage of this mechanism, you will see useful function names in
  102. the debugger rather than the useless gensym names that have been in the
  103. past few releases.
  104.  
  105. ***
  106. Compiled files containing defmethod forms should be smaller and load
  107. faster.
  108.  
  109. ***
  110. Many of the files in the system have been renamed.  More files will be
  111. renamed in upcoming releases.
  112.  
  113. ***
  114. An important part of the bootstrapping code has been re-written.  The
  115. remainder of this code (the BRAID1 and BRAID2 files) will be re-written
  116. sometime soon.
  117.  
  118. The changes made to bootstrapping in this release were done to make
  119. early methods more understandable, and as part of implementing generic
  120. function objects.  Also, most users should find that PCL loads in less
  121. time than it did before.
  122.  
  123. The changes which will be made to bootstrapping in a future release will
  124. make understanding the "Braid" stuff easier, and will make it possible
  125. to implement slot-description objects as described in the CURRENT DRAFT
  126. of the Common Lisp Object System Chapter 3.
  127.  
  128. ***
  129. The defsys file has been re-written AGAIN.  This shouldn't affect users
  130. since there are still the old familiar variables *pcl-pathname-defaults*
  131. and *pathname-extensions*.
  132.  
  133. ***
  134. The specialized foo-notes files are all gone.  Most of them were
  135. hopelessly out of date, and installing pcl is now the same operation for
  136. any Lisp.  In particular, note that in Vaxlisp, it is no longer
  137. necessary to push lisp:vaxlisp on the *features* list.
  138.  
  139.